using System;
using System.Collections.Generic;
using Phoenix.Frames;
using Phoenix.Lifetime;

namespace Phoenix.Framework
{
    public class InvokeActionRequest
    {
        public InvokeActionRequest(
            ControllerActionContext currentContext, 
            ControllerAction target, 
            IEnumerable<ControllerActionParameter> parameters,
            InvokeOptions options,
            IContentFrame targetFrame = null, 
            IRequestTransientStore requestTransientStore = null)
        {
            CurrentContext = currentContext;
            Target = target;
            Parameters = parameters;
            Options = options;
            TargetFrame = targetFrame;
            RequestTransientStore = requestTransientStore;
        }

        public ControllerActionContext CurrentContext { get; private set; }
        public ControllerAction Target { get; private set; }
        public IEnumerable<ControllerActionParameter> Parameters { get; private set; }
        public InvokeOptions Options { get; set; }
        public IContentFrame TargetFrame { get; set; }
        public IRequestTransientStore RequestTransientStore { get; private set; }
    }
}